/*
 * 验证规则
 * ['change', 'blur'] 修改 或 失去焦点时触发验证
 */
// const trigger = ['change', 'blur']
const trigger = ['blur']
const errorMessage = '非法字符'
// 必填选项
export const requiredVerify = (val) => {
  return {
    required: true,
    message: `请填写${val}`,
    trigger
  }
}

export const lengthVerify = (len) => {
  function verify (rule, value, callback) {
    if (String(value).length === len) {
      callback()
    } else {
      callback(new Error(`长度应为${len}个字符`))
    }
  }
  // eslint-disable-next-line standard/object-curly-even-spacing
  return { validator: verify, trigger}
}
// 数字
export const schoolNumVerify = () => {
  function verify (rule, value, callback) {
    if (String(value).length === 10) {
      callback()
    } else {
      callback(new Error(`长度应为10个字符`))
    }
  }
  return {
    validator: verify,
    pattern: /^[0-9_/.]+$/,
    message: '请输入学号',
    trigger
  }
}
// 字符长度范围限制
export const rangeVerify = (min, max) => {
  return {
    min,
    max,
    message: `输入长度为${min}-${max}字符`,
    trigger
  }
}
// 中文字符
export const chinaCharVerify = () => {
  return {
    pattern: /^[\u4e00-\u9fa5]+$/,
    message: errorMessage,
    trigger
  }
}
// 数字
export const numberVerify = () => {
  return {
    pattern: /^[0-9_/.]+$/,
    message: '请输入数字',
    trigger
  }
}
//  非法字符过滤，过滤掉除了字母和数字外的其他字符
export const codeVerify = () => {
  return {
    pattern: /^[a-zA-Z0-9_/]+$/,
    message: errorMessage,
    trigger
  }
}
// 手机号码
export const phoneNumber = () => {
  return {
    pattern: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
    message: '手机号错误',
    trigger
  }
}

export const mailNumber = () => {
  return {
    //    1 - @之前必须有内容且只能是字母（大小写）、数字、下划线(_)、减号（-）、点（.）
    //    2 - @和最后一个点（.）之间必须有内容且只能是字母（大小写）、数字、点（.）、减号（-），且两个点不能挨着
    //    3 - 最后一个点（.）之后必须有内容且内容只能是字母（大小写）、数字且长度为大于等于2个字节，小于等于6个字节
    pattern: /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/,
    message: '邮箱格式不正确',
    trigger
  }
}
export const checkPass = (pass1) => {
  function verify (rule, value, callback) {
    if (value === '') {
      callback(new Error('请再次输入密码'))
    } else if (value !== pass1) {
      callback(new Error('两次输入密码不一致!'))
    } else {
      callback()
    }
  }
  return {
    validator: verify,
    trigger
  }
}
